      1  public class Student

      2  {

      3     private double[] scores;

      4     private int scoresSize;

      5

      6     /**

      7        Constructs a student with no scores and a maximum number of scores.

      8        @capacity the maximum number of scores for this student

      9     */

     10     public Student(int capacity)

     11     {

     12        scores = new double[capacity];

     13        scoresSize = 0;

     14     }

     15

     16     /**

     17        Adds a score for this student.

     18        @param score the score to add

     19        @return true if the score was added, false if there was no room to add the score

     20     */

     21     public boolean addScore(double score)

     22     {

     23        if (scoresSize < scores.length)

     24        {

     25           scores[scoresSize] = score;

     26           scoresSize++;

     27           return true;

     28        }

     29        else

     30        {

     31           return false;

     32        }

     33     }

     34

     35     /**

     36        Computes the sum of the scores of this student.

     37        @return the sum of the scores

     38     */

     39     public double sum()

     40     {

     41        double total = 0;

     42        for (int i = 0; i < scoresSize; i++)

     43        {

     44           total = total + scores[i];

     45        }

     46        return total;

     47     }

     48

     49     /**

     50        Gets the minimum score of this student.

     51        @return the minimum score, or 0 if there are no scores.

     52     */

     53     public double minimum()

     54     {

     55        if (scoresSize == 0) { return 0; }

     56        double smallest = scores[0];

     57        for (int i = 1; i < scoresSize; i++)

     58        {

     59           if (scores[i] < smallest)

     60           {

     61              smallest = scores[i];

     62           }

     63        }

     64        return smallest;

     65     }

     66

     67     /**

     68        Gets the final score for this student.

     69        @return the sum of the scores, with the lowest score dropped if

     70        there are at least two scores, or 0 if there are no scores.

     71     */

     72     public double finalScore()

     73     {

     74        if (scoresSize == 0)

     75        {

     76           return 0;

     77        }

     78        else if (scoresSize == 1)

     79        {

     80           return scores[0];

     81        }

     82        else

     83        {

     84           return sum() - minimum();

     85        }

     86     }

     87  }

     88